AWS 官方的部署 Python 代码到 Lambda function 上去的两种方法

简介

要把 Python 项目部署到 AWS 的 Lambda function,AWS 官方提供了两种方法:ChaliceSAM(AWS Serverless Application Model),当然,其实比较常用的还有第三方的 serverless。

详情

Chalice

Chalice 不仅仅是一个部署工具,它还是一个框架,要是用它需要在 Python 代码里 import 它的包,并在代码里需要的地方使用它的方法做一些操作。

这样才能在用命令 chalice deploy 部署时结合其他配置文件(.chalice/config.json 以及其他需要的 .chalice/policy-xxx.json) 完成部署。

Chalice 其实应该是调用的 AWS SDK for Python 来实现的,因此它也需要先在本地配置 AWS 的 credentials。

SAM

SAM,全称:AWS Serverless Application Model,由名字一看就知道是一个通用的工具,可以用来部署各种语言(比如 Python、Java 和 nodejs)编写的 serverless 应用。

SAM 则是完全基于 AWS CLI,所以本地需要先安装并配置好 AWS CLI 的环境,让 AWS CLI 能跑起来。

SAM 的工作原理其实最终是通过在 AWS 上的 cloudformation 里创建 stack 来完成部署的。所以,cloudformation 有的缺点他都有。

区别

  1. Chalice 仅适用于 Python 语言,而且对代码的侵入性比较强。但优点是完全使用 AWS SDK,不依赖于 AWS CLI 和 cloudformation(尤其是后者,比较不好用)
  2. SAM 更加通用,不侵入代码,但缺点是依赖于 AWS CLI 和 cloudformation(主要是后者)

总结

  • 如果是新起的项目,并打算用 Python 开发的,可以考虑选 Chalice
  • 如果不是用 Python 开发的,肯定不能用 Chalice,大概率选 SAM
  • 如果是已有的项目,现在要部署到 AWS 的 Lambda function,也最好选 SAM

本文由 老杨 原创,转载请注明出处。